Sound, Modular and Compositional Verification of the Input/Output Behavior of Programs
نویسندگان
چکیده
We present a sound verification approach for verifying input/output properties of programs. Our approach supports defining highlevel I/O actions on top of low-level ones (compositionality), defining input/output actions without taking into account which other actions exist (modularity), and other features. As the key ingredient, we developed a separation logic over Petri nets. We also show how with the same specification style we can elegantly modularly verify “I/O-like” code that uses the Template Pattern. We have implemented our approach in the VeriFast verifier and applied it to a number of challenging examples.
منابع مشابه
Modular Semi-automatic Formal Verification of Critical Systems Software ; Modulaire halfautomatische formele verificatie van kritische systeemsoftware
In the first part of this thesis, we present a case study on successfully verifying the Linux USB BP keyboard driver. Our verification approach is (a) sound, (b) takes into account dynamic memory allocation, complex API rules and concurrency, and (c) is applied on a real kernel driver which was not written with verification in mind. We employ VeriFast, a software verifier based on separation lo...
متن کاملA Denotational Semantics for SPARC TSO
The SPARC TSO weak memory model is defined axiomatically, with a noncompositional formulation that makes modular reasoning about programs difficult. Our denotational approach uses pomsets to provide a compositional semantics capturing exactly the behaviours permitted by SPARC TSO. It uses buffered states and an inductive definition of execution to assign an input-output meaning to pomsets. We s...
متن کاملCompositional Invariant Generation via Linear Recurrence Analysis
This paper presents a new method for automatically generating numerical invariants for imperative programs. Given a program, our procedure computes a binary input/output relation on program states which over-approximates the behaviour of the program. It is compositional in the sense that it operates by decomposing the program into parts, computing an abstract meaning of each part, and then comp...
متن کاملCoqIOA: A Formalization of IO Automata in the Coq Proof Assistant
Implementing distributed systems correctly is difficult. Designing correct distributed systems protocols is challenging because designs must account for concurrent operation and handle network and machine failures. Implementing these protocols is challenging as well: it is difficult to avoid subtle bugs in implementations of complex protocols. Formal verification is a promising approach to ensu...
متن کاملA High Gain Bipolar Pulse Generator with Low Voltage Input Source
This paper proposes a pulsed power generator which consists of two types of switched-capacitor booster modules. A doubling mode module employed to elevate the input voltage to a specified level and, constant mode module is used to increase the elevated voltage into the finally intended bipolar output voltage. Also, the proposed modular structure does not utilize any switches across the load. Ot...
متن کامل